package it.patterns.behavioral.iterator;

/**
 * 
 * Provide a way to access the elements of an aggregate object sequentially
 * without exposing its underlying representation. It also supports multiple
 * traversals of aggregate objects. Moreover, it provides a uniform interface
 * for traversing different aggregate structures (i.e. support polymorphic
 * iteration).
 * 
 * <img src="Iterator.jpg" alt="Pattern Structure"/>
 * 
 * @author Luca D'Onofrio
 * 
 * @category Behavioral Pattern
 * @see "Design Patterns - Element of Reusable Object Oriented Software (Gamma,Helm, Johnson, Vlissides)"
 * 
 * @version 1.0
 * 
 */
public interface Iterator<Item> {
	public void first();

	public void next();

	public boolean isDone();

	public Item currentItem();
}
